package com.gdawj.ejb;

import com.gdawj.javabeans.Etudiant;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.ejb.Stateful;
import javax.ejb.PostActivate;
import javax.ejb.PrePassivate;
import javax.ejb.Remove;
import javax.ejb.StatefulTimeout;


@Stateful
@StatefulTimeout(30000)
public class AbsenceEtudiantEJB {
    
    private List<Etudiant> listeEtudiants=new ArrayList<Etudiant>();

    // constructeur 
    public AbsenceEtudiantEJB(){
        
    }

    // ajouter un etudiant comme absent
    public void ajouterAbsence(Etudiant etudiant)
    {
       if(!listeEtudiants.contains(etudiant)){
            listeEtudiants.add(etudiant);
       }
    }
    
    // supprimer un etudiant comme absent
    public void supprimerAbsence(Etudiant etudiant)
    {
       if(listeEtudiants.contains(etudiant)){
            listeEtudiants.add(etudiant);
       } 
    }

    // vider la liste et supprimer le stateful
    @Remove
    public void viderAbsence()
    {
        listeEtudiants=null;
        listeEtudiants.clear();
    }

    // retourner la liste des absents
    public List<Etudiant> getListeEtudiants() {
        return listeEtudiants;
    }

    @PostConstruct
    public void postConstructMethode(){
        listeEtudiants=new ArrayList<Etudiant>();
        System.out.println("Méthode annotée @PostConstruct déclenchée");
    }

    @PostActivate
    public void postActivateMethode(){
        System.out.println("Méthode annotée @PostActivate déclenchée");
    }

    @PreDestroy
    public void preDestroyMethode(){
        listeEtudiants=null;
        System.out.println("Méthode annotée @PreDestroy déclenchée");
    }

    @PrePassivate
    public void prePassivateMethode(){
        System.out.println("Méthode annotée @PrePassivate déclenchée");
    }
}
